上一篇文章結尾的練習題談到「馬拉松新手花生,最近跑半馬花了 16521 秒完賽,請問這是幾小時、幾分鐘又幾秒鐘呢?」,在筆者提供的 Colab 裡面附上的解答如下:
>>> 16521 % 60
21
>>> 16521 // 60
275
>>> 275 % 60
35
>>> 275 // 60
4
這樣的寫法看起來是不是很麻煩呢?需要把 16521 拿來算個兩次,分別取得秒數跟分鐘數,再把求得的 275 分鐘拿來算兩次,算出最後的答案。雖然這樣的做法簡單直白,但如果題目給的總秒數改了,那便要修改多處才能重新計算正確的結果。
程式碼就是來應付各種不同輸入的,所以需要更有彈性的寫法!
這時便能透過變數來將運算結果給存下來!變數讓我們可以透過有意義的名稱來代表某些數值,例如:
>>> s = 16521
>>> s % 60
21
>>> s // 60
275
這裡使用 s = 16521
來表示 s
這個符號目前代表 16521
這個數值。此處與一般的數學符號意義不同,一般的數學符號 =
是用來表示等號的左右兩邊相等,但是在程式語言裡面,等號是用來賦值的!也就是我們賦予一個值給 s
,其值為 16521
。
這裡的
s
代表的是seconds
的字首。
這樣做的好處在於,如果今天完賽的時間不是 16521 秒了,而是 19487 秒,那只需要修改 s = 19487
這行就好,後續的程式碼不須修改也能正確執行。
方才透過 s // 60
得到的 275
分鐘,在後續依然需要用上兩次,因此可以把他存在另外一個變數裡面:
>>> s = 16521
>>> m = s // 60
>>> m
275
將變數獨立放在最後一行,可以顯示該變數的內容。
統整以上程式碼,分別使用 h, m, s
來代表小時、分鐘、秒:
>>> s = 16521
>>> m = s // 60 # 存放總分鐘數
>>> h = m // 60 # 存放總小時數
>>> s = s % 60 # 存放目標秒數
>>> m = m % 60 # 存放目標分鐘數
>>> h, m, s
(4, 35, 21)
將多個變數用逗號分開放在最後一行,可以顯示多個變數的內容。
這時無論題目給的總秒數怎麼改變,都可以輕鬆算得最終答案囉!
變數的命名相當自由,可以使用:
A~Z, a~z
0~9
_
但還是有些限制:
a1, b2
,但是不能命名為 1a, 2b
。abc
與 ABC
代表不一樣的變數。if, for, while
等,詳細的保留字列表可以參考官方文件。變數與變數之間也能互相運算,來試試看計算直角三角形的斜邊邊長吧!
a = 3
公分,長邊 b = 4
公分,請問斜邊 c
是幾公分呢?
r = 5
的圓形,面積是多少呢?
a = 3
,要怎麼寫讓 a
的值 +1 變成 4 呢?完整的程式碼放在此 Colab 裡面供各位參考。